# -*- coding: utf-8 -*-
# @File  : 继承多线程类.py
# @Author: zbh
# @Date  : 2025/2/19_16:05

import multiprocessing
import os
import time

def work_func(argxx):
    res = 1
    for i in range(argxx):
        res *= i

class MyProcess(multiprocessing.Process):  # 继承Process类
    def __init__(self,target,args):  # 重写__init__方法
        super().__init__()  # 调用父类的__init__方法
        self.target = target  # 定义一个属性
        self.args = args  # 定义一个属性
    def run(self):  # 重写run方法
        self.target(*self.args)  # 调用目标函数
        print("子进程的id：",os.getpid())

def main():
    process_list = []
    print("本机CPU为：",os.cpu_count(),"核")
    start = time.time()
    for i in range(4):  #
        p = MyProcess(target=work_func,args=(1000000,))  # 创建一个进程，target为进程要执行的函数
        process_list.append(p)  # 将进程放入进程列表
        p.start()  # 启动进程
    print(process_list)
    for p in process_list:  # 等待所有进程执行完毕
        print(p)
        p.join()  # 进程结束后，应该调用 join() 方法等待进程完成，以确保资源被正确释放
    stop = time.time()
    print("计算密集型任务，多进程耗时：",round(stop-start,2))  # 计算密集型任务，多进程耗时：

if __name__ == "__main__":
    main()

